System to assist users of a software application

ABSTRACT

A system configured to assist users of a software application is provided. The system includes a virtual agent server  100  configured to receive input that identifies a primary user and at least one secondary user, wherein the primary user and the secondary user are parties to an event. Further, the virtual agent server  100  receives input identifying one or more preferences of the primary user and the secondary user corresponding to one or more categories of preferences. The virtual agent server  100  then assigns relative weightage to preferences within a category among categories of preferences. Subsequently, the virtual agent server  100  generates one or more suggestions corresponding to the event based on the relative weightage.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims priority under 35 U.S.C. § 120 as acontinuation-in-part of currently pending U.S. patent application Ser.No. 15/356,512, filed Nov. 18, 2016, which is a non-provisionalapplication claiming the benefit under 35 U.S.C. § 119(e) of ProvisionalPatent Application Nos. 62/257,722, 62/275,043 and 62/318,762, filedNov. 20, 2015, Jan. 5, 2016 and Apr. 5, 2016, respectively. The entiredisclosures of all said prior applications are hereby incorporated byreference.

BACKGROUND Field of Invention

The subject matter in general relates to the field of virtual assistantsystems. More particularly, but not exclusively, the subject matterrelates to a virtual assistant system that makes suggestions andexecutes actions corresponding to events in which preferences ofmultiple entities matter.

Discussion of Related Art

In our day-to-day lives we face many situations that requirecoordination between multiple people. However, multiple opinions arisewhen there are multiple people, and it becomes tough to come up withrecommendations that are suitable to everyone's taste, resulting in alot of time, effort and coordination needed to come to a decision whichis acceptable by everyone. Conventional systems are incapable of makingsuggestions and executing actions corresponding to events in whichpreferences of multiple entities matter. Also, there are no provisionsto take tastes and opinions of multiple people into consideration.Further, there are no systems which may help the users in fulfilling theactions that were selected based on preferences of multiple people.

Customers who wish to place an order, complete a transaction or cleardoubts regarding a product or a service generally try to contact thecustomer service of the respective organization. Customers'communication with call centers mostly take place over phone calls ore-mails and frequently leads to confusions and errors in communicationbetween the customer and the call center representative, especially withcommunication network issues, hearing issues and misinterpretation ofinstructions related to functioning/use of products. Further, there areinstances where the call center representative may not understand theneeds or requirements of the customer, which leaves them unable to helpthe customer. Such situations lead to customer dissatisfaction and oftenresult in bad reviews and complaints made by the customer regarding theorganization.

Conventional systems do not help customers when they face confusionswhile trying to communicate with a call center representative. Further,there is no provision to support and help the call center representativein case they need further help while communicating with the customer.

Further, in conventional systems, customers talk to the customer serviceof the business on the phone. Therefore, the current customer serviceexperiences are restricted to a communication wherein the customer canonly hear an agent's speech on a telephone line. Such voice basedcommunication has limitations in terms of how well one can express andaddress issues, and how well one can interpret and understandinformation presented through such communication.

An image and/or video are worth 1000 sentences. However, the currentcustomer service experiences are restricted to a communication whereinthe user can only hear an agent's speech on a telephone line.

Thus, the conventional systems failed to solve the above problems, whichresult in inconveniences to planners and people who are coordinatingbetween multiple persons. Further, with the current increase in thecoordinated work between multiple people at residences, offices andother campuses, it is of prime importance to have improved systems.

SUMMARY

Accordingly, an improved technique to overcome the above problems isneeded. To fulfil this need, a system configured to assist users of asoftware application is provided. The system comprises a virtual agentconfigured to receive input that identifies a primary user and at leastone secondary user, wherein the primary user and the secondary user areparties to an event. Further, the virtual agent receives inputidentifying one or more preferences of the primary user and thesecondary user corresponding to one or more categories of preferences.The virtual agent then assigns relative weightage to preferences withina category among categories of preferences. Subsequently, the virtualagent generates one or more suggestions corresponding to the event basedon the relative weightage.

Further, a system configured to assist in customer service is provided.The system comprises a database comprising multimedia files, wherein oneor more tags are associated with one or more of the multimedia files.The system further comprises a virtual agent configured to receive inputfrom a first user and a second user; and process the received input tounderstand a context of the input. Further, the virtual agent identifiesone or more multimedia files based on the context and the tags andshares at least one of the identified multimedia files with at least oneof the first user and the second user to enable better understandingbetween them.

Further, a system configured to complete a transaction is provided. Thesystem comprises a first virtual agent assisting a customer and a secondvirtual agent assisting an organization. The first virtual agent isfurther configured to receive input from the customer and process theinput to determine an action desired by the customer and context of theaction. Further, the first virtual agent communicates the action desiredby the customer and the context of the action to the second virtualagent. The second virtual agent is configured to receive communicationof the action desired by the customer and the context of the action andexecute the action based on the context of the action.

Other objects, features, and advantages of the present invention willbecome apparent from the following detailed description. It should beunderstood that however, that the detailed description and specificexamples, while indicating preferred embodiments of the presentinvention, are given by way of illustration only and variousmodifications may naturally be performed without deviating from thepresent invention.

BRIEF DESCRIPTION OF DIAGRAMS

Embodiments are illustrated by way of example and not limitation in theFigures of the accompanying drawings, in which like references indicatesimilar elements and in which:

FIG. 1 depicts an exemplary architecture of a virtual agent server 100for assisting a user.

FIG. 2 depicts a system 200 including the virtual agent server 100 forassisting a user, in accordance with an embodiment;

FIG. 3 depicts a flowchart of an exemplary method 300 for assistingusers using a virtual agent server 100, in accordance with anembodiment.

FIG. 4 depicts a system 400 including the virtual agent servers 100 aand 100 b for assisting a user, in accordance with an embodiment;

FIG. 5 depicts a flowchart of an exemplary method 500 for optimizing auser's desired actions, in accordance with an embodiment.

FIG. 6 depicts a system 600 including the virtual agent server 100 forassisting users, in accordance with an embodiment;

FIG. 7 depicts a flowchart of an exemplary method 700 for assistingusers using a user's mobile device 202, in accordance with anembodiment;

FIGS. 8-11 depict exemplary user interfaces for assisting users using auser's mobile device 202, in accordance with an embodiment; and

FIG. 12 depicts a system including the virtual agent server 100 forassisting users in a conversation with a customer service representative208, in accordance with an embodiment.

DETAILED DESCRIPTION OF THE INVENTION

The following detailed description includes references to theaccompanying drawings, which form part of the detailed description. Thedrawings show illustrations in accordance with example embodiments.These example embodiments are described in enough details to enablethose skilled in the art to practice the present subject matter.However, it will be apparent to one of ordinary skill in the art thatthe present invention may be practised without these specific details.In other instances, well-known methods, procedures and components havenot been described in detail so as not to unnecessarily obscure aspectsof the embodiments. The embodiments can be combined, other embodimentscan be utilized or structural and logical changes can be made withoutdeparting from the scope of the invention. The following detaileddescription is, therefore, not to be taken as a limiting sense.

In this document, the terms “a” or “an” are used, as is common in patentdocuments, to include one or more than one. In this document, the term“or” is used to refer to a non-exclusive “or,” such that “A or B”includes “A but not B,” “B but not A,” and “A and B,” unless otherwiseindicated.

It should be understood that the capabilities of the invention describedin the present disclosure and elements shown in the figures may beimplemented in various forms of hardware, firmware, software,non-transitory recordable medium or combinations thereof.

Overview

The embodiments disclose techniques used to solve problems incommunication between multiple entities with the help of a virtual agentserver 100. A virtual agent server 100 can help a user and a group ofpeople to decide on a task. Sometimes, when there are a number of peopleinvolved in an activity, deciding on a single course of action becomesdifficult due to the differences in opinions of the people involved. Insuch a case, a user can use the virtual agent server 100 to help indeciding on an acceptable course of action. The virtual agent server 100can understand natural speech and will determine preferences of peoplewho are parties to an event. It will then come up with overallbest-suited suggestions by taking everyone's preferences intoconsideration. The user and other people involved can choose whicheversuggestions they prefer, and the virtual agent server 100 will executethe selected suggestions based on the feedback of the user and others.Further, the virtual agent server 100 can search for multimedia filesthat are relevant to the suggestions and share them with the user. Thevirtual agent server 100 can also communicate with external applicationsto optimize and execute the user's desired actions such that theoptimizations are in favour of the user.

The disclosed system may be used in any chat, voice or phone-basedcommunication. The virtual agent server 100 can identify multimediafiles such as images, audio and video clips that are relevant to thetopic of communication. Further, the virtual agent server 100 can streamor share the identified multimedia files with one or more users. Hence,the virtual agent server 100 can be used for event planning, taskplanning, customer support, and other related applications.

Further, the embodiments disclose techniques used to solve problems incustomer service with the help of virtual agent servers 100. A virtualagent server 100 can help a user who has contacted a customer servicerepresentative.

Virtual Agent System

FIG. 1 represents an exemplary architecture of a virtual agent server100, in accordance with an embodiment. The virtual agent server 100 mayinclude a Natural Language Understanding (NLU) module 102 to understandthe speech of the users, a preference module 104 to determinepreferences of the users, a location module 106, a suggestion generationmodule 108, a controller module 110, a security module 112, a multimediamodule 114, an execution module 116 and an optimization processor module118.

The virtual agent server 100 may receive input identifying a primaryuser and one or more secondary users, wherein the primary user and thesecondary users are parties in an event that needs coordination betweenthe primary and secondary users. Further, the virtual agent server 100may receive one or more inputs to identify one or more preferences ofthe primary user and the secondary user. The preferences may correspondto one or more categories of preferences. Subsequently, the virtualagent server 100 may assign one or more relative weightage topreferences within a category and generate one or more suggestions forthe primary and secondary users based on the relative weightage. Thevirtual agent server 100 may then communicate with the primary andsecondary users to help them execute their selected suggestion.

In an implementation, a primary user may communicate with the virtualagent server 100 using their user's mobile device 202 a. The primaryuser may request the virtual agent server 100 to initiate communicationwith one or more secondary users using their mobile device 202 b inorder to include them as a party in the event being coordinated by theprimary user. Alternatively, the primary user may contact one or moresecondary users by themselves as depicted in FIG. 8.

In an implementation, the Natural Language Understanding Module 102(hereafter called NLU module 102) may be used by the virtual agentserver 100 to understand the natural speech of the primary or secondaryusers.

In an implementation, the NLU module 102 may receive the primary and/orsecondary user's natural speech as an input. This natural speech may bein the form of audio or text. Further, the NLU module 102 may parseinformation from the primary and/or secondary user's natural languagespeech in order to collect information about the primary and/orsecondary user's desired action and context of the desired action.

In an implementation, the input to the NLU module 102 may be receivedthrough one or more of the following situations: the primary user maycommunicate with the virtual agent server 100, or with one or moresecondary users. The input may further include inputs received from theprimary or secondary users in previous conversations. The NLU module 102may generate text from the primary or secondary user's speech. In animplementation, the virtual agent server 100 may label parts of the textof the primary or secondary user. These labels may be used by thevirtual agent server 100 to understand the speech of the primary orsecondary users.

In an implementation, for example, in case the user comments “I'mlooking for Indian restaurants which are close to my house”, the virtualagent server 100 may label “looking for” as ‘desired action’,“restaurants” as ‘desired event’, “Indian” as ‘desired cuisine’, and“close to my home” as ‘desired distance’.

The labels for the text may be generated using Hidden Markov Models orConditional Random Field models. Alternatively, the NLU module 102 mayuse one or more slot-filling algorithms or manually configured rules ornatural language analysis or a machine learning classifier to determinethe primary or secondary user's desired action and context from theprimary or secondary user's natural speech. Subsequently, the NLU module102 may communicate the primary or secondary user's desired action andcontext to other modules of the virtual agent server 100.

The preference module 104 be used to determine the preferences of theprimary or secondary users. These preferences may be used by the virtualagent server 100 to create relevant suggestions for the primary orsecondary users.

In an implementation, the preference module 104 may receive inputs fromother modules of the virtual agent server 100 and process the inputs todetermine the preferences of the primary and secondary users.

In an implementation, the preference module 104 may also determine oneor more preferences of the primary user and/or the secondary user basedon a conversation between two or more of, the primary user, thesecondary user and the virtual agent server 100. The conversation may bea present conversation or one or more past conversations which may bereceived from an external database or server. The virtual agent server100 may identify one or more preferences based on the frequency ofcertain words used in the conversation. Further, the virtual agentserver 100 may assign weightage to the preferences based on thefrequency of the words used in the conversation.

Further, the preference module 104 may communicate with one or moredatabases to receive a history of the primary or secondary users. Thepreference module 104 may represent the preferences of the primary orsecondary users by creating a matrix of their preferences along one ormore parameters.

In an implementation, a representative location of the entire group ofprimary and/or secondary users may be derived from a conversationhistory or from the primary and/or secondary user. In anotherimplementation, a centroid may be computed by laying out the longitudeand latitude of the primary and/or secondary users.

In an implementation, the preference module 104 may convert the strengthof the user's preferences into a number. The strength of the user'spreferences may be measured by features such as frequency of usage ofthe preference, tone of voice, pitch of voice, frequency of repeatedwords, history or social profile of the primary or secondary users,among others. Weightage may be assigned to one or more preferences basedon the above mentioned features. A weighted table may be constructed forthe primary and secondary users by considering their user preferencescores and frequency of the preferences of the primary and secondaryusers.

In an implementation, the location module 106 may be used to receive ordetermine one or more location information related to the primary orsecondary users. The virtual agent server 100 may use this locationinformation as a preference to generate suggestions for the primary andsecondary users.

Further, the location module 106 may communicate the determinedlocations of the primary and secondary users with other modules of thevirtual agent server 100.

In an implementation, the location of the primary and secondary usersmay be derived from a previous or present conversation between at leasttwo of the primary user, secondary user, and the virtual agent server100. Alternatively, the location of the primary or secondary users maybe determined based on the GPS location information of the primaryand/or secondary users' mobile devices 202 a, 202 b.

In an implementation, the location information of the primary orsecondary users may include one or more current locations where theprimary or secondary users are currently present at. Further, thelocation information may include an address of a preferred location,wherein the virtual agent server 100 has determined, using thepreference module 104, that the primary or secondary user showspreference for the preferred location over other locations.

In an implementation, the location information shared by the locationmodule 106 with other modules may include an address of one or morelocations of consensus. The virtual agent server 100 may be configuredto determine one or more locations of consensus as explained below.These locations of consensus may be determined based on the locationinformation corresponding to the primary user or the secondary user.Further, the suggestions may also be based on the locations ofconsensus.

In an implementation, the suggestion generation module 108 may take intoconsideration the different preferences of the primary and secondaryusers to generate suggestions that may be used by the primary andsecondary users.

In an implementation, the suggestion generation module 108 may receiveinformation from the other modules of the virtual agent server 100. Thesuggestion generation module 108 may receive location information fromthe location module 106 and preference information from the preferencemodule 104. Further, the suggestion generation module 108 may receiveinformation regarding the desired action and context of the desiredaction of the primary user from the NLU module 102.

In an implementation, the suggestion generation module 108 may take thepreferences of the primary and secondary users; and receive a userprofile and/or a user history from one or more databases. Further, thesuggestion generation module 108 may process the received information togenerate suggestions applicable to the primary and secondary users; andrank the generated suggestions so that the virtual agent server 100 maysuggest the higher ranked suggestions before the lower rankedsuggestions. To generate suggestions, the preferences of the primary orsecondary users may be converted into a single user vector for searchand recommendations use cases. The user vector may comprise elementsthat hold information representing one or more of the location of thevarious users, set of preferences of the primary or secondary users, andhistory of the users, amongst others. A group user vector may then beused to rank the elements, which may be further used during variousactions such as search and suggestion, among others.

As an example, the suggestion generation module 108 may create a uservector for a user ‘Dan’ as shown below. The desired action and contextof user Dan may be to locate a restaurant where he may have lunch. Oneor more information about user Dan received from databases and presentand previous conversations comprising location information and foodpreferences may be included in the elements of the user vector asfollows:

User Dan:

location: {37.4292 N, 122.1381}

preferences: {Italian 4.1}, {Thai 3.5}, {Indian: 2.0}

favourite_dishes: {Lasagne 10.1}, {Drunken Noodles 8.5}

In an implementation, in case the group size comprising the primary andsecondary users increases, there may not be many preferences that matchthe interest of all users. In this case, the suggestion generationmodule 108 may construct a query with less number of restrictions to geta higher number of suggestion results. This query may result in one ormore suggestions that may be preferred by more primary or secondaryusers. Further, the suggestion generation module 108 may rank theresults of this query. Subsequently, the ranked results may be suggestedto the primary and secondary users. The suggestion generation module 108may use one or more of the following methods to rank the suggestions.

In an implementation, the first iteration of ranking may be done by analgorithm such as a simple Euclidean distance between a combination ofuser and query vector and result vector. Further, the second iterationof ranking may use an expensive Gradient Boosted Decision Tree learn torank algorithm with features from the user vector.

In another implementation, the ranking may be generated by communicatingwith one or more contacts of the primary or secondary users andrequesting them for their advice or opinion to identify one or moresuggestions. The contacts of the primary user may be retrieved from oneor more social networks or from a contact list on the primary user'smobile device 202 a. In case the primary user has not given any explicitinput regarding which contact's opinion is to be requested, the virtualagent server 100 may rank the contacts of the primary and/or secondaryusers in social network/contacts to optimize the requesting process fora timely feedback from the contacts. Further, one or more contacts maybe selected based on the ranking to receive their opinion or adviceregarding the preferences of the primary or secondary users. In animplementation, ranking of social contacts may use a Gradient BoostedDecision Tree learn to rank algorithm.

In an implementation, the virtual agent server 100 may decide to ask theprimary user for feedback in case the primary user has explicitly askedthe virtual agent server 100 to do so. Alternatively, the virtual agentserver 100 may run a machine learning classifier to determine if itneeds to contact other users to get feedback on the restaurant in theconversation.

In an implementation, the suggestion generation module 108 may beconfigured to determine one or more locations of consensus. Theselocations of consensus may be locations which may be acceptable by amajority of the primary and secondary users. These locations ofconsensus may be determined based on location information correspondingto the primary user or the secondary user. Further, the suggestionsgenerated by the suggestion generation module 108 may also be based onthe locations of consensus.

In an implementation, the suggestion generation module 108 may furthercommunicate with other external systems 404, such as social networkplatforms 210, related to the primary or secondary users to collectinformation that may help in generating suggestions. In an embodiment,the suggestion generation module 108 may communicate with a calendarapplication on the primary and/or secondary user's mobile device 202 a,202 b to determine the time and date of the user's free time orappointments. Further, the suggestion generation module 108 maycommunicate with external applications such as Google maps to determineestimated time, locations and routes. Such information collected fromexternal systems 404 may be used to generate suggestions for the primaryor secondary users.

As an example, the primary user may like an Indian restaurant which is 5miles away. The virtual agent server 100 may have contacted one or moreexternal systems 404 and determined that there is an accident on routeto the restaurant. Further, the virtual agent server 100 may havecommunicated with the calendar application of the primary and/orsecondary user's mobile device 202 a, 202 b and determined that theprimary or secondary user has a meeting scheduled in 10 minutes. In thiscase, the virtual agent server 100 may alert the user that it may betough for the primary or secondary user to attend the meeting if hechooses that Indian restaurant. The virtual agent server 100 maygenerate a suggestion to the primary or secondary user such as “I canshow you the driving directions to the restaurant you chose but it lookslike you have a meeting in another 10 minutes and there is an accidenton the way. You might be late to the meeting if we proceed”.

In an implementation, the generated suggestion may be communicated tothe primary or secondary users as one or more of a spoken dialog, a textmessage or an e-mail, among others. The generation of the suggestion maybe alerted to the primary or secondary user by using a spoken dialog, aring tone or a phone vibration.

In an implementation, the controller module 110 may be used tocoordinate actions between the other modules of the virtual agent server100. The controller module 110 may comprise the main instructions to befollowed by the virtual agent server 100 while taking into considerationthe preferences of the multiple users and suggesting actions to bechosen by the users which may be further implemented by the virtualagent server 100.

In an implementation, the controller module 110 may determine the bestalerting mechanism to be used for alerting the primary or secondary userin case of a generated suggestion. The controller module 110 may use acombination of rules configured against events and a MachineLearning/Predictive classifier to determine the type of alert that maybe used in a given scenario. Some variables that may be used as inputinto the algorithm/rules are:

a) Is the user moving as measured by the phone location?b) What is the type of the message? Is it a date meet or lunch meet withco-workers?c) Is the user in an important meeting?d) How many people are currently engaged with the user?e) How far is the phone to the user? Is the phone in a pocket or on atable or in hand?

In an implementation, the answers to one or more of these questions maybe measured by tracking the time lag between changes in the position ofa user's mobile device 202. For instance, in an example it may take anapproximately constant time for the primary or secondary user to moveuser's mobile device 202 from his pocket to his hand and complete anunlock action or click action on the screen of the user's mobile device202. The virtual agent server 100 may keep a track of time periods whenthe user may have put the user's mobile device 202 down. Alternatively,the virtual agent server 100 may instruct a user's mobile device 202sensors to log metadata information about the surroundings of the user'smobile device 202.

In an implementation, the controller module 110 may determine that thevirtual agent server 100 may have stopped communication with the user'smobile device 100. This may have occurred either due to network failureor server malfunctioning. In such scenarios, in an implementation theremay be a virtual agent client 212 on the primary and/or secondary user'smobile device 202 a, 202 b wherein the virtual agent client 212 may havea preconfigured time period to receive a response from the virtual agentserver 100. In case the virtual agent server 100 does not respond withinthe preconfigured time period, the virtual agent client 212 may makedecisions with the available information using one or more softwarecodes and data lookup tables stored locally on the user's mobile device.

In an implementation, the virtual agent client 212 on the primary and/orsecondary user's mobile device 202 a, 202 b may push data and logicalsteps needed for the user to make decisions about the generatedsuggestions in case the virtual agent server 100 has stoppedcommunication with the user's mobile device 100 due to low or nonetwork. The virtual agent client 212 on the primary and/or secondaryuser's mobile device 202 a, 202 b may push the data and the logicalsteps of the virtual agent process either as a periodic process or afterrunning a machine learning classifier using features such as userlocation and network availability in the location.

In an implementation, the code may be a JavaScript code for the virtualagent client 212 to execute, wherein data may be stored in a nestedhashmap structure. The hashmap data structure may assign unique keys tovalues to be stored. The values may be stored in a map by forming akey-value pair. The values may be retrieved at any point by passing theassigned key through an appropriate command.

As an example, consider a user trying to find a restaurant when thevirtual agent server 100 may stop communicating with the primary and/orsecondary user's mobile device 202 a, 202 b:

-   -   User: “I am looking for an Indian Restaurant”    -   Virtual agent server 100: “It looks like you are around Fremont.        Based on your food taste, you might like food from the        restaurant Shalimar” (Virtual agent server 100 may show pictures        of dishes at Shalimar in the conversation using implementations        discussed above)    -   User: “Call Shalimar”

Further, the virtual agent server 100 may stop communication with theuser. The virtual agent client 212 may determine that there is noconnection to the virtual agent server 100. The virtual agent client212, based on the context of user location and network type might run aMachine Learning classifier algorithm and execute the action instructedby the user. In this case, when the user says “Call Shalimar”, thevirtual agent client 212 may forward the phone number of the selectedrestaurant and the code to call the phone number to the user's mobiledevice 100. The user's mobile device 100 may then initiate a call to therestaurant “Shalimar” when the user says “Call Shalimar”, even though itcan't communicate with the virtual agent server 100.

The discussed implementations may be applicable to allcustomer-to-business interactions including one or more of buyingproducts on retail websites and buying airline tickets, among others.The disclosure discusses techniques in the context of natural speechinteraction between users and virtual agent servers 100. Thesetechniques may be easily extended to natural text interactions as seenin conventional chat applications.

In an implementation, the security module 112 may be used to maintainthe security of the user. The virtual agent server 100 may ensure thatthe security of the primary or secondary users is not breached. This maybe accomplished by not sharing any unnecessary or extra informationwhile completing the primary or secondary users' request while matchingthe questions against slots. Further, the security module 112 mayrestrict revealing any extra information unless explicitly approved bythe primary or secondary user.

In an implementation, the multimedia module 114 may be used by thevirtual agent server 100 to search and share multimedia files andsuggestions with the primary or secondary users to give them a betterunderstanding of the generated suggestions. The virtual agent server 100may stream one or more multimedia such as images, files, audio or video,among other multimedia related to context of the conversation. In animplementation, this may be accomplished by training a ConvolutionalNeural Network with tagged multimedia files.

In an implementation, the multimedia module 114 may be used by thevirtual agent server 100 to identify one or more multimedia files thatthe user may be interested in based on the user's intent from one ormore text-based chat and/or phone communication. Further, the multimediamodule 114 may share the identified multimedia files with one user andreceive that user's feedback regarding the identified multimedia files.Subsequently, the multimedia module 114 may share one or more of theidentified multimedia files with another user based on the feedbackreceived. The multimedia files and textual tags may be stored in adatabase as explained below in FIG. 6.

In an implementation, the execution module 116 may be used by thevirtual agent server 100 to receive and process feedback from theprimary and/or secondary users corresponding to the generatedsuggestions. Further, the execution module 116 may execute one or moreof the suggestions that have been selected by the primary or secondaryusers using the feedback and the context derived from the natural speechof the primary or secondary users. The virtual agent server 100 mayreceive feedback from the primary or secondary users regarding thegenerated suggestion that they may have selected. In case the selectedsuggestion may be executed without contacting any external system 404,the execution module 116 may directly initiate the execution of theselected suggestion.

In an implementation, there may be situations wherein the virtual agentserver 100 may need to communicate with one or more external systems 404in order to execute the selected suggestion. In this case, the executionmodule 116 may first determine the type of external system 404 it needsto communicate with.

In an implementation, the external system 404 may be a softwareapplication comprising a web application 206 or it may be a naturalperson such as a customer service representative 208. In case theexecution module 116 has determined that it needs to contact an externalweb application 206, the virtual agent server 100 may call an externalApplication Programming Interface and execute the selected suggestionwith the parsed parameters from the natural language speech of theprimary or secondary users. In case the external system 404 doesn'tcomprise of an Application Programming Interface, the execution module116 may need to search for a phone number or customer serviceapplication related to the external system 404 in order to execute thesuggestion selected by the primary or secondary users.

In both cases, the execution module 116 may need to collect one or moreparameters related to the context of the execution. These parameters mayinclude one or more of conversation summary, user's first name and lastname, time, date, location and operating system of the primary and/orsecondary user's mobile device 202 a, 202 b, among others. The possibleways in which this information may be collected are follows:

-   -   a) Question and Answering problem: In this implementation, the        context, conversation history and inference from the        conversation are used for answering a query regarding the value        of the parameter for the Application Programming Interface.        Attributes such as meta-data of the Application Programming        Interface and the collected parameters are used to construct the        question. In an implementation, this may be done by using        manually developed pattern matching rules. Alternatively, a        combination of Memory Networks, Recurrent Neural Network models        with pattern matching rules may be used to answer questions for        the Application Programming Interface. Crowdsourcing platforms        may be used to create training data for training neural        networks.    -   b) Slot filling Algorithms: In this implementation, slot filling        algorithms may be used to figure out the parameters for the        Application Programming Interface after passing the conversation        context through one or more entity recognition algorithms.    -   c) Manual rules: Manual rules may be configured against the        textual patterns using regular expressions and grammars to parse        out the parameters.

In another implementation, the virtual agent 100 may determine theparameters for the Application Programming Interface call from thenatural language of the primary and/or secondary user, by storing,searching, and inferring information from the user dialog history andruntime context. In an implementation, the past ‘n” dialogs areretrieved and one or more words represented by tokens may be annotatedwith labels using entity name recognition techniques. Further, inferencerules may be run on the annotated dialogs to derive any extrainformation, following which, parameters for the Application ProgrammingInterface call are gathered.

In an implementation, the optimization processor module 118 may be usedby a virtual agent server 100 a in case it needs to communicate withanother virtual agent server 100 b representing an external system 404to execute a user's actions, as depicted in FIG. 4. In this case, theoptimization processor module 118 may be used to determine optimizationoptions corresponding to the user's desired actions, communicating theoptimization options with the other virtual agent server 100 b, ifallowed by the user. Further, the optimization processor module 118 maybe used to determine which optimization option is to be executed.

FIG. 2 depicts a system 200 comprising a virtual agent server 100 whichmay communicate with primary and secondary users' mobile devices 202 aand 202 b; a web application 206, a customer service representative 208,a social network webpage 210, and a virtual agent client 212 asdepicted.

In an implementation, the primary and secondary user's mobile device 202a, 202 b may include mobile phones, palmtops, PDAs, tablet PCs, notebookPCs, laptops and computers, among other computing devices. In anembodiment, the primary and secondary user's mobile device 202 a, 202 bmay include any electronic device equipped with a browser to communicatewith the virtual agent server 100. The user's mobile device 202 maybelong to a primary or a secondary user who may use it to communicatewith the virtual agent server 100.

In an implementation, the primary and/or secondary user's mobile device202 a, 202 b may include a virtual agent client 212 which maycommunicate with the virtual agent server 100 and share inputs relatedto the primary or secondary user with the virtual agent server 100.Further, the virtual agent client 212 may execute one or moreinstructions in case communication with the virtual agent server 100 hasfailed, as described in embodiments above.

In an implementation, the virtual agent server 100 may be implemented inthe form of one or more processors with a memory coupled to the one ormore processors with one or more communication interfaces. The virtualagent server 100 may communicate with one or more external systems 404and one or more primary and/or secondary user's mobile device 202 a, 202b through a communication network. It may be noted that some of thefunctionality of the virtual agent server 100 may be implemented in theprimary and/or secondary users' mobile devices 202 a and 202 b.

In an implementation, the communication network may include a wirednetwork, a wireless network, or a combination of wired network andwireless network. For example, the communication network may includelocal area network, wide area network, and metropolitan area network,among others.

In an implementation, the social network webpage 210 may comprise of anywebpage related to a social networking application used by the primaryand/or secondary users through their primary and secondary users'devices 202 a and 202 b.

In an implementation, the virtual agent server 100 may communicate witha primary user through their primary user's mobile device 202 a andsecondary users through their user's mobile devices 202 b. The virtualagent server 100 may receive inputs from the primary and/or secondaryusers, and determine their desired action and a context of their desiredaction. Further, the virtual agent server 100 may determine preferencesof the primary and/or secondary users, and may generate suggestions forthe primary and/or secondary users. In case the primary and/or secondaryusers select a suggestion, the virtual agent server 100 may communicatewith one or more external systems 404 such as the web application 206 ora natural person such as the customer service representative 208 inorder to execute the selected suggestion.

In an implementation, the virtual agent server 100 may be required tocontact the customer service representative 208 in case options are notavailable. The customer service for the business may be handled by ahuman i.e. a customer service representative 208 or by a virtual agentserver 100. In both cases, the virtual agent server 100 may need tounderstand a natural language interaction wherein the virtual agentserver 100 operating on behalf of the user may be required to answerquestions about the user's desired action. In an implementation, thismay be accomplished by parsing the natural language evaluatingprobabilities against configured slots and providing one or more answersto the customer service representative 208 or the virtual agent server100. The virtual agent server 100 may ensure that the transaction isacknowledged. The acknowledgement may then be communicated to the userin the form of a message or notification. As an example, in case thevirtual agent server 100 was required to contact the customer servicerepresentative 208 of a hotel, the virtual agent server 100 may conversewith the customer service representative 208 using natural language toreserve bookings on behalf of the user as instructed, and receive anacknowledgement corresponding to the booking. Further, virtual agentserver 100 may communicate the following message to the user through theprimary user's mobile device 202 a “The hotel bookings at Hilton for 2days have been confirmed”.

In an implementation, the virtual agent server 100 may receive inputsfrom a current conversation between a primary user and a customerservice representative 208. The virtual agent server 100 may convert theconversation to text to generate one or more metadata such asinformation about the speaker and emotional response of the speaker,among others. The annotated text may then be analysed for one or moreactions such as placing an order/transaction, complaints, bad customerservice etc. This analysis may be done using one or more of slot fillingalgorithms, manually configured rules, natural language analysis forpre-configured actions or a Machine Learning classifier. The actions maythen be completed by a virtual agent server 100 by calling externalAPI's and/or making phone calls.

FIG. 3 depicts a method 300 for a virtual agent server 100 to determineone or more preferences of primary or secondary users to generatesuggestions and execute the selected suggestions, in accordance with animplementation. The method 300 may be implemented by a server or anapplication on a primary and/or secondary user's mobile device 202 a,202 b.

In an implementation, the virtual agent server 100 may be instructed bythe primary user to include one or more secondary users in aconversation between the primary user and the virtual agent server 100.The virtual agent server 100 may be configured to obtain inputidentifying the secondary user from one or more of a phone number of thesecondary user, voice characteristics of the secondary user or metadatacorresponding to the secondary user, among others. The virtual agentserver 100 may communicate with one or more external servers to obtainmetadata corresponding to the secondary user.

At step 302, inputs from the primary and secondary users and theirlocation information may be received or determined by the variousmodules included in the virtual agent server 100. Further, usingprevious and present inputs, the virtual agent server 100 may determineone or more preferences of the primary and secondary users as depictedat step 304. The user inputs and their preferences may be used by thevirtual agent server 100 to determine one or more desired actions andthe context of the actions desired by the primary and/or secondaryusers.

The method at step 306 comprises of receiving inputs from contacts ofthe primary user, regarding their advice or opinions related to thepreferences of the primary user. At step 308, the virtual agent server100 may process the preferences of the primary and/or secondary users togenerate a broad query. The result of this broad query may result in oneor more suggestions that may correspond to the preferences of theprimary and/or secondary users. Further, as shown in step 310, thevirtual agent server 100 may share one or more multimedia files with theprimary and/or secondary users, wherein the shared multimedia files maybe related to the generated suggestions and/or preferences of theprimary and/or secondary users.

After sharing the generated suggestions, the virtual agent server 100may receive feedback related to the suggestions from the primary and/orsecondary users as shown at step 312. The virtual agent server 100 mayprocess the received feedback to determine whether any of the suggestedgenerations were selected by the primary and/or secondary users. In casethe primary and/or secondary users did not agree on finalizing asuggestion, the virtual agent server 100 may generate furthersuggestions based on the feedback of the primary/secondary users asshown in step 308. In case one or more suggestions were selected by theprimary and/or secondary users, the virtual agent server 100 may executeone or more actions based on the received feedback as shown at step 314.

FIG. 4 depicts a system 400 including a virtual agent server 100 aassisting a user and a virtual agent server 100 b assisting anorganization, in accordance with an embodiment. In an embodiment, auser's actions may be executed by a virtual agent server 100 a and anexternal system 404's actions may be executed by a virtual agent server100 b. The virtual agent server 100 a may communicate with the virtualagent server 100 b through an external application programminginterface. In an embodiment, this communication may be in the form ofone or more of natural speech interaction or machine understandablelanguage, among others.

In an implementation, the virtual agent server 100 a may receive theuser's speech or chat 402 as an input from the user or other modules ofthe virtual agent server 100. Subsequently, the virtual agent server 100a may use the NLU module 102 to process the input to determine an actiondesired by the user and context of the action. The context and user'sdesired action may be communicated to the virtual agent server 100 b andmay be incorporated during execution of actions.

In an implementation, the virtual agent server 100 a may determine oneor more plans of action that may optimize the desired actions of theuser. These optimization options may be communicated with the virtualagent server 100 b representing an external system 404. The user maydetermine which information may be shared by using the security module112.

In an implementation, the virtual agent server 100 b may determine oneor more optimization options related to the external system 404 andcommunicate them to virtual agent 100 a. The virtual agent server 100 aof the user may contact the virtual agent server 100 b of the externalsystem 404 through an external application programming interface call.The virtual agent server 100 a may communicate the user's desiredactions to the virtual agent server 100 b. The two virtual agent servers100 a and 100 b may communicate with each other to execute the desiredaction of the user while implementing one or more optimization options.

In an implementation, the two virtual agent servers 100 a and 100 b maycommunicate using natural language speech which may be understood by thetwo virtual agent servers 100 a and 100 b. The user's context anddesired actions may be included as one or more parameters in the speech.Alternatively, the virtual agent servers 100 a and 100 b may communicatevia one or more application programming interfaces, wherein the user'scontext and user's desired action are shared as parameters in theapplication programming interface call.

In an implementation, the virtual agent servers 100 a and 100 b maycommunicate with one or more databases to receive further informationcorresponding to the user and the external system 404.

In an implementation, the user's speech may be in the form of naturallanguage and may comprise textual words from the user received from thecurrent conversation. In an implementation, the user's input may betaken from previous “m” conversations, where “m” is manually configuredor tuned using Machine Learning for an application. The NLU module 102may assign one or more weights to the tokens (individual words) in thespeech context using Term Frequency Inverted Document Frequency (tfidf)and the recency of the communication session. The speech context mayalso include explicit inputs or inferences from previous speechinteraction sessions decayed using recency of occurrence.

In an implementation, the virtual agent server 100 b may be configuredto receive and process the action desired by the customer and thecontext of the action to obtain input for executable action.

In an implementation, the virtual agent servers 100 a and 100 b may beconfigured to exchange optimization options of the user and the externalsystem 404, respectively, with each other, where the optimizationoptions correspond to the execution of the action. Further, the virtualagent servers 100 a and 100 b may identify if a common optimizationoption exists between the optimization options shared by the virtualagent servers 100 a and 100 b. Subsequently, the virtual agent servers100 a and 100 b may execute one or more actions as per the commonoptimization option, in case it exists.

In an implementation, the system 400 may be configured to execute theaction as per the preference of the customer in case a common preferencedoes not exist.

In an implementation, as an example, consider a virtual agent server 100b (hereafter called V_(B)) handling the customer service of a business.A customer may order food using their own virtual agent server 100 a(hereafter called V_(U)). V_(U) may determine to place an order for oneor more dishes on behalf of the user. V_(U) may contact V_(B) andinitiate a communication session through an application programminginterface call or by conversing through dialogs. The virtual agentservers V_(B) and V_(U) may use natural language understandingtechniques to understand each other and to determine further actionsfrom the conversation.

The payment for the order may be transferred through an online banktransaction using one of the customer's bank accounts. V_(B) may requestpayment information from V_(U) to complete the order. V_(U) may identifyone or more manually configured rules to optimize the payment on behalfof the user. As an example, V_(U) may identify a rule to optimize forone or more parameters such as credit score, cash rewards and offers,among others, which may be applicable to the user's transaction. Themanual rule may be configured either by taking the user's feedback orthrough V_(U), which may configure default rules for the users. V_(B)may comprise a rule which instructs it to prefer a credit card thatcharges the least transaction fees. V_(B) may configure the default rulefor the merchant. In case the user allows freedom to and V_(U) agent tocomplete the transaction, V_(U) may optimize the transaction for theuser. Similarly, V_(B) may optimize for the business.

In an implementation, V_(B) may process one or more informationcorresponding to the user to determine whether they are flexible on thetype of card to use to complete the transaction. In case V_(B) and V_(U)belong to the same entity, they might coordinate a transaction which isoptimized for both the user and the business, after optimizing on theirrespective customers. For example, V_(U) may decide to use any one oftwo credit cards C₁, C₂ belonging to the user in case they both comprisethe same cash rewards and don't show any adverse impact on the creditscore of the user. V_(B) may prefer to complete the transaction withcredit card C₁ in case it charges less on the transaction fees. Hence,V_(B) may negotiate with V_(U) to determine whether credit card C₁ maybe used instead of C₂. V_(B) may accomplish this by using a manual ruleconfigured against payment transaction and requesting V_(U) forinformation regarding all the credit card types owned by the customer.V_(U) may share the user's information about the credit cards that maybe use to complete the transaction after getting an approval from theuser to share the information. V_(B) may ask V_(U) to use C₁ over C₂ forcompleting the transaction, by passing a list of cards it would preferto use.

In an implementation, this may be done by using an applicationprogramming interface wherein the preferred list is passed as a listordered by preference of credit cards. V_(U) may then determine whetherto accept V_(B)'s request regarding the preferred credit card. In anembodiment, a virtual agent server 100 may represent V_(U) and V_(B) andmay do global optimization for both V_(B) and V_(U) after optimizing ontheir respective customers.

The discussed optimization principles may be applied to one or moretypes of actions including transactions such as merchandising one-commerce platform, negotiating charges for a spa service, andnegotiating hotel stay rates, among others.

FIG. 5 may depict a flowchart of an exemplary method 500 for optimizinga user's desired actions, in accordance with an embodiment. This methodmay be used in case a first virtual agent server 100 and a secondvirtual agent server 100 that represent a user and a businessrespectively. At step 502, the user's desired actions may be determinedby the first virtual agent server 100 from one or more inputscorresponding to the user. Further, the first virtual agent server 100may contact the second virtual agent server 100 to communicate theuser's desired actions with the second virtual agent server 100.

At step 504, the first virtual agent server 100 may determine one ormore optimization options preferred by the user, and the second virtualagent server 100 may determine one or more optimization optionspreferred by the business. Subsequently, one or more of the optimizationoptions may be communicated between the first agent and the secondvirtual agent server 100 which may determine whether any optimizationoptions are present that are common between the optimization optionsdetermined by the first and the second virtual agent server 100 as shownat step 506.

In case no common optimization options are present, the first virtualagent server 100 and the second virtual agent server 100 may proceed toexecute the user's desired actions according to the instructions orcontext of the user, as shown at step 508. In case there are one or morecommon optimization options present, the first virtual agent server 100and the second virtual agent server 100 may determine which commonoptimization option to execute. Further, the first virtual agent server100 and the second virtual agent server 100 may execute the user'sdesired action according to the selected common optimization as shown atstep 510.

FIG. 6 may depict a system 600 including the virtual agent server 100which may share one or multimedia files with users, in accordance withan embodiment. The system may include a primary user's mobile device 202a, a secondary user's mobile device 202 b, and a multimedia database602.

The primary user may initiate communication with a secondary user. In animplementation, there may be more than one secondary user using asecondary user's mobile device 202 b to communicate with the primaryuser. The multimedia database 602 may comprise one or more multimediafiles, with one or more tags associated with one or more of themultimedia files. Further, the virtual agent server 100 may receiveinput from the primary and the secondary user, and may process thereceived input to understand a context of the input. Further, thevirtual agent server may identify one or more multimedia files based onthe context and the tags. Subsequently, the virtual agent server 100 mayshare one or more of the identified multimedia files with one or more ofthe primary and secondary user to enable better understanding betweenthe primary and secondary user.

In an implementation, the tags may be natural language tags. Further, aconvolutional neural network may be used to tag multimedia files.Alternatively, multimedia files may be tagged using one or morecrowdsourcing platforms. The textual tags and meta-data corresponding tothe multimedia files may be stored in a database or an inverted index tooptimize the retrieval performance of the virtual agent server 100.

In an implementation, the multimedia module 114 may receive one or moreof conversation context, user intent, dialog summary and speech of theuser converted into text, among other information, from the NLU module102 through the primary and/or secondary user's mobile devices 202 a and202 b. The conversation context and the dialog summary may then be usedto identify tagged multimedia files related to the user's intent byusing information retrieval techniques. Further, the virtual agentserver 100 may share the identified multimedia with one or more of theprimary and/or secondary users by sharing the multimedia files throughtheir user's mobile device 202 a, 202 b as explained below.

FIG. 7 depicts a flowchart of an exemplary method 700 for sharingmultimedia files with primary and/or secondary users through theiruser's mobile device 202 a, 202 b, in accordance with an embodiment.

The virtual agent server 100 may receive one or more inputs from thefirst user and the second user as depicted in step 702. Further, thevirtual agent server 100 may process the received input to determine acontext of the input at step 704.

At step 706, the virtual agent server 100 may identify one or moremultimedia files from a multimedia database 602 by matching the contextof the user to tags assigned to one or more multimedia files.Subsequently, the virtual agent server 100 may share at least one of theidentified multimedia files with one of the two users at step 708.

At step 710, the virtual agent server 100 may receive feedbackcorresponding to at least one of the identified multimedia files fromthe user with whom it is shared. The feedback may contain a selection orranking of the identified multimedia files. Further, as shown at step712, the virtual agent server 100 may share one or more of the selectedor ranked multimedia files with the other user among the two users basedon the feedback received.

In an embodiment, the first user may be a customer and the second usermay be a customer service representative 208. Further, the identifiedmultimedia files may be shared with the customer who may share theirfeedback regarding the identified multimedia files with the virtualagent server 100. The identified multimedia files may have been rankedfor natural language context by the customer and may be shared with thecustomer service representative 208 who did not receive any multimediafiles yet.

In an embodiment, the identified multimedia files may be shared with thecustomer service representative 208 who may share their feedbackregarding the identified multimedia files with the virtual agent server100. The identified multimedia files may have been ranked for naturallanguage context by the customer service representative 208 and may beshared with the customer who did not receive any multimedia files yet.The sharing of the relevant multimedia files may aide in betterunderstanding between the user and the customer service representative208.

In an implementation, the virtual agent server 100 may be furtherconfigured to share at least one of the identified multimedia files in acurrent conversation between the first user and the second user.

In another implementation, a single image may be selected from thesearch results to stream to the users. The virtual agent server 100 mayuse one or more of a predictive algorithm or machine learning to shareone or more multimedia files.

In another implementation, the multimedia file may include at least oneof an image, an audio file, a video file or a document.

FIG. 8 depicts an exemplary user interface which may show the virtualagent client 212 in the primary user's mobile device 202 a. The virtualagent client 212 may include one or more options to be selected by theuser. The options may include ‘Add a friend’ wherein a primary user maychoose to add one or more secondary users to a conversation. An ‘Executeaction’ function may be used by the user to instruct the virtual agentclient 212 about one or more actions desired by the user. In FIG. 8, aprimary user has selected the ‘Add a friend’ option. The primary usermay view a pop-up window with two options as shown. The primary user maychoose the ‘Select friend’ option in case the primary user chooses toadd a friend to the conversation by using the virtual agent client 212.Alternatively, the primary user may choose the ‘Select friend’ option incase the primary user chooses to add a friend to the conversationmanually.

FIG. 9 depicts an exemplary user interface which may show the virtualagent client 212 present in the primary user's mobile device 202 a aftera friend (secondary user) of the primary user has been added to aconversation.

FIG. 10 depicts an exemplary user interface which may show aconversation between the primary user and secondary user on the primaryuser's mobile device 202 a. In this conversation, the two users arediscussing where to have lunch. The primary user and secondary user maydecide to eat burgers at a restaurant near the primary user's house asshown.

The virtual agent client 212 may determine the context, user's desiredactions and preferences from the conversation between the primary andsecondary user's conversation as follows. The user's desired action maybe to locate a restaurant, the context may be to have lunch, and thepreferences may be a restaurant close to the primary user's house whereburgers are available.

FIG. 11 depicts an exemplary user interface showing a virtual agentclient 212 that has determined a suggestion for the primary andsecondary user. The suggestion was created using the preferences of theprimary and secondary user. This suggestion may be a restaurant “BurgerPrince”. A multimedia file comprising an image depicting the restaurantmay be shared with the primary user's mobile device 202 a. Additionally,the virtual agent client 212 may communicate with an external mapapplication to share a map depicting a route from the primary user'shouse to the suggested restaurant, as shown.

FIG. 12 depicts a system including the virtual agent server 100 forassisting users in a conversation with a customer service representative208, in accordance with an embodiment. The system depicts a user usingtheir user's mobile device 202 in a conversation with a customer servicerepresentative 208. The virtual agent server 100 may receive theconversation as an input. Further, the virtual agent may process andcomprehend the input in order to send one or more multimedia filesrelated to the conversation. In this case, the user may have a doubtregarding what to order. Consequently, the user may ask the customerservice representative 208 about the best burger available at “BurgerPrince” restaurant. The virtual agent server 100 may comprehend thisquery and conduct an appropriate search. Further, the virtual agentserver 100 may share one or more multimedia files with the customerservice representative 208, who may select one image representing themost popular burger at Burger Prince. Further, the customer servicerepresentative 208 may share the image with the user on their user'smobile device 202 as depicted in FIG. 12.

CONCLUSION

The present invention overcomes the drawbacks of virtual assistantsystems, by taking into consideration preferences of multiple users andgenerating suggestions which may be suitable to most the users. Further,the system helps to enable better understanding between a customer andcustomer service representative. Additionally, the system helps inselection and sharing of multimedia files between two users or between acustomer service representative and a user. Thus, the present inventionas discussed in this document with respect to different embodiments willbe advantageous at least in optimizing the process of event coordinationand execution of actions selected by multiple users. Further, it isadvantageous in providing better user experience and decreasing time andeffort required by users in coordinating an event. It is alsoadvantageous in helping the user in the process of conversing with acustomer representative. Additionally, the system may optimize actionsfor the user while trying to execute actions on behalf of the user.Additional advantages not listed may be understood by a person skilledin the art considering the embodiments disclosed above.

It shall be noted that the processes described above are described assequence of steps; this was done solely for the sake of illustration.Accordingly, it is contemplated that some steps may be added, some stepsmay be omitted, the order of the steps may be re-arranged, or some stepsmay be performed simultaneously.

Although embodiments have been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the system and method described herein.Accordingly, the specification and drawings are to be regarded in anillustrative rather than a restrictive sense.

Many alterations and modifications of the present invention will nodoubt become apparent to a person of ordinary skill in the art afterhaving read the foregoing description. It is to be understood that thephraseology or terminology employed herein is for the purpose ofdescription and not of limitation. It is to be understood that thedescription above contains many specifications; these should not beconstrued as limiting the scope of the invention but as merely providingillustrations of some of the personally preferred embodiments of thisinvention. Thus, the scope of the invention should be determined by theappended claims and their legal equivalents rather than by the examplesgiven.

I/We claim:
 1. A system configured to assist users of a softwareapplication, the system comprising a virtual agent server configured to:receive input identifying a primary user and at least one secondaryuser, wherein the primary user and the secondary user are parties to anevent; receive input identifying one or more preferences of the primaryuser and the secondary user corresponding to one or more categories ofpreferences; assign relative weightage to preferences within a categoryamong the one or more categories of preferences; and generate one ormore suggestions corresponding to the event based on the relativeweightage.
 2. The system according to claim 1, wherein the virtual agentserver is configured to obtain the input identifying the secondary userfrom at least one of phone number of the secondary user, voicecharacteristics of the secondary user or metadata corresponding to thesecondary user.
 3. The system according to claim 1, wherein the virtualagent server is configured to consider the secondary user to be party tothe event based on input received from the primary user.
 4. The systemaccording to claim 1, wherein the virtual agent server is configured toreceive location information corresponding to at least one of theprimary user or the secondary user, wherein the location information isone of the preferences.
 5. The system according to claim 4, wherein thevirtual agent server is configured to determine one or more locations ofconsensus, wherein the one or more locations of consensus are determinedbased on the location information corresponding to the primary user orthe secondary user, wherein the suggestions are also based on the basedon the locations of consensus.
 6. The system according to claim 4,wherein the location information is a current location information of atleast one of the primary user or the secondary user.
 7. The systemaccording to claim 4, wherein the location information is a preferredlocation information of at least one of the primary user or thesecondary user.
 8. The system according to claim 1, wherein the virtualagent server is configured to identify at least one of the preferencesof each of the primary user and the secondary user based on conversationbetween at least two of, the primary user, the secondary user and thevirtual agent server.
 9. The system according to claim 8, wherein theconversation is a current conversation.
 10. The system according toclaim 8, wherein the conversation is one or more previous conversations.11. The system according to claim 8, wherein the at least one of thepreferences is identified based on frequency of words used in theconversation.
 12. The system according to claim 8, wherein weightage isassigned to the at least one of the preferences based on frequency ofwords used in the conversation.
 13. The system according to claim 8,wherein the at least one of the preferences is identified based on toneof the conversation.
 14. The system according to claim 8, whereinweightage is assigned to the at least one of the preferences based ontone of the conversation.
 15. The system according to claim 1, whereinthe virtual agent server is configured to identify at least one of thepreferences of each of the secondary user based on a social profile ofthe secondary user.
 16. The system according to claim 1, wherein thevirtual agent server is configured to identify at least one of thepreferences of each of the primary user and the secondary user based onhistory of the primary user and the secondary user.
 17. The systemaccording to claim 1, wherein the virtual agent server is configured to,at least one of: identify at least one of the preferences of the primaryuser by receiving input from one or more contacts of the primary user;or identify at least one of the preferences of the secondary user byreceiving input from one or more contacts of the secondary user.
 18. Thesystem according to claim 17, wherein the virtual agent server isconfigured to, at least one of: rank the contacts of the primary userand select one or more contacts based on the ranking, to receive inputcorresponding to the at least one of the preferences of the primaryuser; or rank the contacts of the secondary user and select one or morecontacts based on the ranking, to receive input corresponding to the atleast one of the preferences of the secondary user.
 19. The systemaccording to claim 1, wherein the virtual agent server is furtherconfigured to: receive feedback from the primary user corresponding tothe suggestions; and execute one or more actions based on the feedbackreceived from the primary user.
 20. The system according to claim 1,wherein the virtual agent server is configured to execute at least oneof the actions by communicating with an external system, wherein theexternal system is at least one of a software application or a naturalperson. 21-40. (canceled)